#include "head.h"
#include <stdio.h>
#include <netinet/in.h>
//msg:传递的数据
//返回值：成功返回结构体大小
//		  返回0 代表断开链接
//		  返回负数 代表接受消息失败
int server_recv(int sockfd,MSG_T *msg)
{
	int ret;
	ret=recv(sockfd,msg,sizeof(MSG_T),0);
	if(ret<0){
		perror("接受消息失败");
		return ret;
	}else if(ret==0){
		perror("客户端断开链接");
	}
	printf("%s: username = %s\n",__func__,msg->user_info.name);
	printf("%s: password = %s\n",__func__,msg->user_info.password);
	return ret;
}

//msg:传递的数据
//返回值：成功返回结构体大小
//		  返回负数 代表发送消息失败
int server_send(int sockfd,MSG_T *msg)
{
	int ret;
	ret=send(sockfd,msg,sizeof(MSG_T),0);
	if(ret<0){
		perror("发送消息失败");
	}
	return ret;
}

//成功返回套接字 
//失败返回负数
int sock_init(int *server_sock)
{
	int ret;//返回值判断
	struct sockaddr_in server_addr;
	socklen_t server_len;

	//套接字创建
	ret=socket(AF_INET,SOCK_STREAM,0);
	if(ret<0){
		perror("服务器套接字创建失败");
		return ret;
	}
	*server_sock=ret;

	//套接字结构体填充和绑定
	server_addr.sin_family=AF_INET;
	server_addr.sin_port=htons(11107);
	server_addr.sin_addr.s_addr=inet_addr("192.168.0.108");
	server_len=sizeof(server_addr);

	ret=bind(ret,(struct sockaddr*)&server_addr,sizeof(struct sockaddr));
	if(ret<0){
		perror("服务器套接字绑定失败");
		return ret;
	}
	return ret;
}
